start()
{
- local enabled
+ local enabled src_ip local_source
config_load mwan3
config_get_bool enabled globals 'enabled' 0
exit 0
}
+ config_get local_source globals local_source 'none'
+ [ "${local_source}" = "none" ] || {
+ src_ip=$(uci_get_state mwan3 globals src_ip)
+ [ "${src_ip}" != "" ] && {
+ ip route del default via "${src_ip}" dev lo 1>/dev/null 2>&1
+ ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1
+ }
+
+ network_get_ipaddr src_ip "${local_source}"
+ if [ "${src_ip}" = "" ]; then
+ $LOG warn "Unable to set source ip for own initiated traffic (${local_source})"
+ else
+ ip addr add "${src_ip}/32" dev lo
+ ip route add default via "${src_ip}" dev lo
+ uci_toggle_state mwan3 globals src_ip "${src_ip}"
+ fi
+ }
+
config_foreach ifup interface
}
stop()
{
- local ipset route rule table IP IPT pid
+ local ipset route rule table IP IPT pid src_ip
for pid in $(pgrep -f "mwan3track"); do
kill -TERM "$pid" > /dev/null 2>&1
mwan3_lock_clean
rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR
+
+ src_ip=$(uci_get_state mwan3 globals src_ip)
+ [ "${src_ip}" = "" ] || {
+ ip route del default via "${src_ip}" dev lo 1>/dev/null 2>&1
+ ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1
+ }
}
restart() {